Ext.define('AgenteNET.controller.utilitarios.Funcoes', {
	extend : 'Ext.app.Controller',
	stores:['utilitarios.Funcoes'],
	views:['utilitarios.funcoes.Listar','utilitarios.funcoes.Novo','utilitarios.funcoes.Editar'],
	init : function() {
		this.control({
			'utilitariosFuncoesList grid' : {
				itemdblclick : this.Editar
			},
			'utilitariosFuncoesList treepanel' : {
				selectionchange:function(item,model){
					var grid=item.view.up('treepanel').up('panel').down('grid');
					grid.getStore().clearFilter();
					if(model[0].get('id')!=1)grid.getStore().filter('primario',model[0].get('id'));
				}
			}

		});
		this.inicializado = true;
	},
	Listar:function(el){
		var animateTarget=null;
		for(i in arguments)if(arguments[i].$className=='Ext.EventObjectImpl')animateTarget=arguments[i].target;
		Ext.getCmp('WorkLayer').removeAll(true);
		return Ext.getCmp('WorkLayer').add(
				Ext.create('AgenteNET.view.utilitarios.funcoes.Listar', {
					margin : '10 10 10 10',
					padding : '0 0 0 0 ',
					region : 'center',
					animateTarget: animateTarget,
				}));
	},
	Novo : function(el) {
		//console.log(Ext.ComponentQuery.query('utilitariosFuncoesList grid')[0].store.add({}));
		var animateTarget=null;
		for(i in arguments)if(arguments[i].$className=='Ext.EventObjectImpl')animateTarget=arguments[i].target;

		var form=Ext.create('AgenteNET.view.utilitarios.funcoes.Novo');
		form.loadRecord(this.getStore('utilitarios.Funcoes').model.create({}));
		var win=Ext.create('Ext.window.Window',{
			alias : 'widget.utilitariosFuncoesNovo',
			title : 'CRIANDO NOVO FUNÇÃO DE CONTROLE DO USUÁRIO',
			items:form,
			closable : true,
			layout : 'fit',
			width:400,
			height:400,
			
			closeAction : 'destroy',
			animateTarget: animateTarget,
			border:false,
			autoShow:true,
		});
		return win;
	},
	Editar : function(el,model) {
		var animateTarget=null;
		for(i in arguments)if(arguments[i].$className=='Ext.EventObjectImpl')animateTarget=arguments[i].target;
		
		var form=Ext.create('AgenteNET.view.utilitarios.funcoes.Editar');
		form.loadRecord(model);
		var win=Ext.create('Ext.window.Window',{
			alias : 'widget.utilitariosFuncoesEditar',
			title : 'EDITANDO A FUNÇÃO DO CONTROLE',
			items:form,
			closable : true,
			layout : 'fit',
			width:400,
			height:400,
			
			closeAction : 'destroy',
			animateTarget: animateTarget,
			border:false,
			autoShow:true,
		});
		return win;
	},
	Adicionar: function(el){
		var form=el.up('form'),win=el.up('window'),model=form.getRecord();
		if(!form.getForm().isValid())return false;
		model.set(form.getValues());
		model.save({
			scope:this,
			win:win,
			success : function(model, op) {
        		var b;if(op.win)if(b=op.win.down('button[text="Fechar"]'))b.fireEvent('click',b);
        		Ext.ComponentQuery.query('utilitariosFuncoesList grid')[0].store.add(model);
        		Ext.ComponentQuery.query('utilitariosFuncoesList treepanel')[0].store.load();
			},
			failure : function(model, op) {
				if (op.error) {
					if (op.error.status == 0) {
						alert('Não foi possivel acessar o servidor '
								+ 'para solicitar a autenticação');
					} else if (op.error.status == 404) {
						alert('Foi possível solicitar '
								+ 'a autenticação do usuário');
					} else if (op.error.status == 403) {
						alert(op.error.msg);
					} else {
						alert(op.error);
					}
				}
			}

		});
		return model;
	},
	Excluir: function(el){
		var win=null,records=[],storeGrid=null,storeTree=null;
		if(el.up('form')){
			win=el.up('window');
			records[0]=el.up('form').getRecord();
			
		}else if(el.up('panel'))if(el.up('panel').down('grid')){
			records=el.up('panel').down('grid').getSelectionModel().getSelection();
			storeGrid=el.up('panel').down('grid').getStore();
			storeTree=el.up('panel').down('treepanel').getStore();
			/*if(records.length==0){
				records=el.up('panel').down('treepanel').getSelectionModel().getSelection();
			}*/
		}
		if(records.length==0){
			Ext.MessageBox.show({
		           title: 'Exclusão de Ações',
		           msg: 'Nenhuma registro de ação foi selecionada para exclusão',
		           buttons: Ext.MessageBox.OK,
		           animateTarget: el,
		           icon: Ext.MessageBox.ERROR
			});
		}
		if(records.length>0){
			Ext.MessageBox.confirm({
		           title: 'Exclusão de ações',
		           msg:'Confirma a'+(records.length>1?'s':'')+' exclus'+(records.length>1?'ões':'ão')+' da'+(records.length>1?'s':'')+' aç'+(records.length>1?'ões':'ão')+' '+(records.length>1?'selecionadas':''),
		           icon: Ext.MessageBox.QUESTION,
		           buttons: Ext.MessageBox.YESNO,
 		           animateTarget: el,
		            buttonText:{ 
		                yes: "Sim", 
		                no	: "Não" 
		            },
		            scope:this,
		            fn: function(resposta){
		            	if(resposta=='yes'){
		            		if(storeGrid){
		            			storeGrid.clearFilter();
		            			storeGrid.remove(records);
		            			storeGrid.sync();
		            			storeTree.load();
		            		}else{
		            			records[0].destroy();
		            		}
		            		var b;if(win)if(b=win.down('button[text="Fechar"]'))b.fireEvent('click',b);
		            	}
		            }
			});
		}
		return records;
	},
	Salvar: function(el){
		var form=el.up('form'),win=el.up('window'),model=form.getRecord();
		if(!form.getForm().isValid())return false;
		model.set(form.getValues());
		model.save({
			scope:this,
			win:win,
			success : function(model, op) {
        		var b;if(op.win)if(b=op.win.down('button[text="Fechar"]'))b.fireEvent('click',b);
        		Ext.ComponentQuery.query('utilitariosFuncoesList grid')[0].store.sync();
        		Ext.ComponentQuery.query('utilitariosFuncoesList treepanel')[0].store.load();
			},
			failure : function(model, op) {
				if (op.error) {
					if (op.error.status == 0) {
						alert('Não foi possivel acessar o servidor '
								+ 'para solicitar a autenticação');
					} else if (op.error.status == 404) {
						alert('Foi possível solicitar '
								+ 'a autenticação do usuário');
					} else if (op.error.status == 403) {
						alert(op.error.msg);
					} else {
						alert(op.error);
					}
				}
			}

		});
		return model;
	},
});
